package cn.com.wxd.dao.user;

import java.util.HashMap;
import java.util.List;

import cn.com.wxd.entity.user.AccountInfo;
import cn.com.wxd.common.PageInfo;
import cn.com.wxd.common.data.KVMap;
import cn.com.wxd.common.data.KeyValue;

/**
 * Created by ComXu on 2017/5/22.
 */
public interface AccountDao {
    /**
     * 根据账号查找账号信息
     * @param userName
     * @return
     */
    AccountInfo selectAccountByUserName(String userName);

    /**
     * 根据id查账号
     *
     * @param id
     *
     * @return
     */
    AccountInfo selectAccountsById(long id);

    /**
     * 根据用户ID查找所有的账号
     * @param userId
     * @return
     */
    List<AccountInfo> selectAccountByuId(long userId);

    /**
     * 根据一些条件查询AccountInfo
     * @param param
     * @return
     */
    List<AccountInfo> selectAccountInfos(HashMap<String,String> param);

    /**
     * 获取所有账户列表，根据分页和一些条件，
     *
     * @param param     条件,key为字段名，value为值
     * @param order     排序字段，
     * @param fuzzField 模糊查询字段，为null不模糊查询
     * @param page      分页信息
     *
     * @return 账号列表
     */
    List<AccountInfo> selectAccounts(List<KeyValue<String, Object>> param, KVMap<String, String> order,
                                     List<String> fuzzField, PageInfo page);

    /**
     * 插入一条账号信息
     * @param accountInfo
     * @return
     */
    void insertAccount(AccountInfo accountInfo);

    /**
     * 删除一个账号
     * @param userName
     * @return
     */
    void deleteAccount(String userName);

    /**
     * 更新一个账号的IP
     * @param userName 用户名
     * @param Ip IP地址
     * @return  是否成功
     */
    void updateAccountIp(String userName, String ip);

    /**
     * 账号登录权限的授权
     * @param userName 用户名， isForbidden 是否禁用此账号 true禁用，false 启动
     * @return  是否成功
     */
    void loginAuthority(String userName, boolean isForbidden);
}
